import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from './router/router'

//引入全局js
import rem from './assets/common/js/rem'//设置全局font-size
import retina from 'retinajs'//视网膜图片
import FastClick from 'fastclick'//解决点击延时300ms
import VueLazyLoad from 'vue-lazyload'//图片懒加载
import axios from 'axios'//请求数据
import store from './store/store'//vuex
import CallApp from 'callapp-lib';//H5换端

import vConsole from './assets/common/js/vconsole.min'//移动端控制台


/**
 * 截至2015年底，大多数移动浏览器（特别是Chrome和Safari）不再具有300ms的触摸延迟，
 * 因此fastclick对新型浏览器没有任何好处，并且可能会在应用程序中引入错误。
*/
if ('addEventListener' in document) {
  document.addEventListener('DOMContentLoaded', function() {
    FastClick.attach(document.body);
  }, false);
}

Vue.use(VueRouter)

Vue.use(VueLazyLoad,{
  error: require('../src/assets/img/loaderror.jpg'),
  loading: require('../src/assets/img/Spinner.gif')
})

//设置默认头信息
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
//添加一个请求拦截器
axios.interceptors.request.use(function(config){
  //在请求发出之前进行一些操作
  return config;
},function(err){
  //Do something with request error
  return Promise.reject(error);
});
//添加一个响应拦截器
axios.interceptors.response.use(function(res){
  //在这里对返回的数据进行处理
  return res;
},function(err){
  //Do something with response error
  return Promise.reject(error);
})
Vue.prototype.axios = axios

//给VueRoute添加一个goBack方法，用于记录路由的前进后退状态
VueRouter.prototype.goBack = function () {
  this.isBack = true
  window.history.go(-1)
}

const router = new VueRouter({
  // mode: 'history',//可以是去掉#号,这种配置需要配合后端服务器的配置。
  routes,
  scrollBehavior (to, from, savedPosition) {//记录上一个页面的scrollTop位置
    // console.log('<--记录上一个页面的scrollTop位置');
    // console.log(savedPosition);
    // console.log('记录上一个页面的scrollTop位置-->');
    if (savedPosition) {
      return savedPosition
    } else {
      if (from.meta.keepAlive) {//跟keepAlive搭配使用
        from.meta.savedPosition = document.body.scrollTop;
      }
      return { x: 0, y: to.meta.savedPosition ||0}
    }
  }
})

new Vue({
  rem,
  store,
  CallApp,
  retina,
  router,
  created() {
    // 组件创建完后获取数据，
    // 此时 data 已经被 observed 了
    // this.getAjax()
  },
  methods: {

  },
  watch: {
    '$route' (to, from) {

    }
  }
}).$mount('#app')
